package com.atguigu.demo.config;

import com.atguigu.demo.service.AgeService;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

// 声明当前类为配置类
@Configuration

// 如果当前类路径下有 AgeService 这个类，就把当前类加入 IoC 容器
// 当前类路径下怎么才能有 AgeService？引入我们正在开发的这个 starter 的依赖即可
@ConditionalOnClass(AgeService.class)
// 注册属性组件，SpringBoot 会读取用户在配置文件中指定的生日字符串，注入属性组件
@EnableConfigurationProperties(AgeProperties.class)
public class AgeAutoConfiguration {

    private  AgeProperties ageProperties;

    public AgeAutoConfiguration(AgeProperties ageProperties) {
        this.ageProperties = ageProperties;
    }

    @Bean
    @ConditionalOnMissingBean
    // 在 IoC 容器中没有 AgeService 这个 bean 时，把我们这里指定的放入 IoC 容器
    public AgeService ageService() {
        return new AgeService(ageProperties.getBirthday());
    }
}
